/*
 * %Z%file      %M%
 * %Z%author    Sun Microsystems, Inc.
 * %Z%version   %I%
 * %Z%date      %D%
 *
 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 */
// Copyright (c) 1995-96 by Cisco Systems, Inc.

package com.sun.jmx.snmp.daemon;


/**
 * A static instance of this class is usually created.  It contains a 
 * counter that is incremented every time it is accessed.  For example,
 * this class can be used in <CODE>SnmpSession</CODE> to generate a request 
 * identifier that is used to identify a message in a client-server session.
 * The class wraps around when it reaches the maximum positive value, 2^31 - 1.
 */

final class SnmpRequestCounter {
	/**
	 * A counter with value between 1...2^31-1.
	 */
	int reqid = 0 ;

	public SnmpRequestCounter() {}

	/**
	 * Returns the next request identifier.
	 * @return next request identifier.  The value wraps to 1 if it reaches negative value.
	 */
	public synchronized int getNewId() {
		if (++reqid  < 0)
			reqid = 1 ;
		return reqid ;
	}
}
